Swift Docs 17. 타입 캐스팅(Type Casting) 타입 캐스팅은 인스턴스 타입을 확인하거나 해당 인스턴스를 자체 클래스에서 다른 상위 클래스나 하위 클래스로 취급하는 방법이다. 타입캐스팅을 사용하여 프로토콜을 준수하는지 확인도 가능하다. 클래스와 하위 클래스의 계층도 타입 캐스팅을 사용해서 특정 클래스의 인스턴스 타입을 확인하고 같은 계층 내에서 다른 클래스로 인스턴스 캐스트도 가능하다. 인스턴스가 특정 하위 클래스 타입인지 확인하기 위해서... Swift DocsType CastingSwift Docs 8-2. 연관된 값, 원시 값, 재귀 열거형 경우에 따라서 케이스 값과 함께 다른 타입의 값을 저장할 수 있는 것이 유용할 때가 있다. 이를 연관된 값이라고 하고 케이스를 코드에서 값으로 사용할때마다 달라진다. 아래 예시코드를 통해 확인한다. 위의 연관된 값(Associated Values)는 열거형 케이스에 다른 타입의 연관된 값을 저장한다고 선언하는 방법을 보여줬다. 이에 대한 다른 방법으로 열거형 케이스는 모두 동일한 타입의 기본... Swift DocsEnumerationsEnumerations 9-1. 구조체와 클래스 비교, 구조체 개념(struct) 구조체와 클래스는 프로그램 코드의 구성요소가 되는 범용 구조이다. 상수, 변수, 그리고 함수를 정의하는 것과 같은 구문을 사용해서 구조체와 클래스에 프로퍼티와 메서드를 기능적으로 추가할 수 있다. 스위프트에서 클래스는 객체보다 좀 더 일반적인 인스턴스라는 용어를 사용한다. 스위프트에서 구조체와 클래스는 공통점이 많다. 값을 저장하는 프로퍼티 정의(Property) 기능 제공을 위한 메서드 정... Swift DocsstructSwift Docs 9-2. 클래스(class) 클래스는 참조타입이다. 값 타입과 반대로 참조타입은 변수 또는 상수에 할당되거나 함수로 전달될 때 복사되지 않는다. 복사본 대신 존재하는 같은 인스턴스에 대한 참조가 사용된다. 클래스는 참조 타입이므로 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능하다. 구조체와 열거형은 상수, 변수 및 함수에 전달될 때 항상 복사되므로 클래스와 다르다. 상수들이 같은 인스턴스를 참조하는... Swift DocsclassSwift Docs 10-3. 전역과 지역변수(Global and Local Variables) 프로퍼티를 계산하고 관찰하기 위해 이전에 설명한 기능들은 전역변수와 지역변수에서도 사용 가능하다. 전역변수는 함수, 메서드, 클로저, 또는 타입 컨텍스트의 외부에 정의된 변수이다. 지역변수는 함수, 메서드 등의 내부에 정의된 변수이다. 저장된 프로퍼티처럼 저장된 변수는 타입의 값을 위한 저장소를 제공하고 값을 설정 및 조회함을 허락한다. 전역상수와 변수는 지연 저장된 프로퍼티와 유사하게 항상... Swift Docs@property@property 10-1. 프로퍼티 개념, 저장된 / 지연저장된 프로퍼티, 계산된 프로퍼티 프로퍼티는 값을 특정 클래스, 구조체, 또는 열거형을 연결한다. 저장된 프로퍼티는 인스턴스의 일부로 상수와 변수값을 저장하고, 계산된 프로퍼티는 값을 저장하는 대신 계산한다. 계산된 프로퍼티는 클래스, 구조체, 열거형에서 제공되고, 저장된 프로퍼티는 클래스와 구조체에서만 제공된다. 또한 프로퍼티 는 타입 자체와도 연결될 수 있는데 이를 타입 프로퍼티라고 한다. 프로퍼티 관찰자(property... Swift Docs@property@property 10-2. 프로퍼티 관찰자(property observer), 프로퍼티 래퍼 프로퍼티 관찰자는 프로퍼티 값이 변경되는지 관찰하고 응답한다. 이는 현재 값이 새로운 값과 같아도 값이 설정되는 시기에 호출된다. 다음의 경우에 관찰자 추가가 가능하다. 정의한 저장된 프로퍼티 상속 저장된 프로퍼티 상속 계산된 프로퍼티 프로퍼티 관찰자 정의는 2가지 선택사항이 있으며, willSet과 didSet이 있다. willSet은 값이 저장되기 직전에 호출된다. 상수 파라미터로 새로운... Swift Docs@property@property 11. 메서드(Method) 메서드는 특정 타입과 연관된 함수이다. 클래스, 구조체, 열거형은 주어진 타입의 인스턴스 동작을 위한 특정작업과 기능을 지원하는 메서드를 정의할 수 있다. 그리고 이들은 또한 타입 자체와 연관된 타입 메서드 정의도 가능하다. 인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수이다. 인스턴스 메서드는 함수에서 설명한대로 함수구문과 완벽하게 동일하다. 타입의 모든 인스턴스는... Swift DocsmethodSwift Docs 13-1. 초기화 개념, 기본 초기화(initialization) 초기화는 인스턴스의 클래스, 구조체 또는 열거형을 사용하기 위해 준비하는 단계를 의미한다. 이 단계에서는 인스턴스에 저장된 프로퍼티에 초기값을 설정해주고, 새로운 인스턴스가 사용할 준비가 되기 전 다른 설정이나 초기화를 수행하는 것을 포함한다. 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출된다. 새로운 구조체의 정의간 사용하는 초기화 구문의 예시는 다음과 같다. 이는 클래스... Swift DocsInitializationInitialization 16. 에러 처리(Error handling, defer) 에러처리는 프로그램의 에러 조건에서 응답하고 대응하는 프로세스이다. 작업이 실패할 경우 코드가 그에 따라서 응답하도록 에러의 원인을 이해하는 것이 유용한 경우가 많고, 이를 위해서 에러핸들링을 사용한다. 열거형은 관련된 에러의 조건을 모델링하는데 매우 적합하며, 관련 값을 통해 에러의 특성 및 정보를 유저에게 전달할 수 있다. 에러가 발생할때는 문제를 수정하거나 다른방법을 시도하거나, 사용자... Swift Docserror handlingSwift Docs
17. 타입 캐스팅(Type Casting) 타입 캐스팅은 인스턴스 타입을 확인하거나 해당 인스턴스를 자체 클래스에서 다른 상위 클래스나 하위 클래스로 취급하는 방법이다. 타입캐스팅을 사용하여 프로토콜을 준수하는지 확인도 가능하다. 클래스와 하위 클래스의 계층도 타입 캐스팅을 사용해서 특정 클래스의 인스턴스 타입을 확인하고 같은 계층 내에서 다른 클래스로 인스턴스 캐스트도 가능하다. 인스턴스가 특정 하위 클래스 타입인지 확인하기 위해서... Swift DocsType CastingSwift Docs 8-2. 연관된 값, 원시 값, 재귀 열거형 경우에 따라서 케이스 값과 함께 다른 타입의 값을 저장할 수 있는 것이 유용할 때가 있다. 이를 연관된 값이라고 하고 케이스를 코드에서 값으로 사용할때마다 달라진다. 아래 예시코드를 통해 확인한다. 위의 연관된 값(Associated Values)는 열거형 케이스에 다른 타입의 연관된 값을 저장한다고 선언하는 방법을 보여줬다. 이에 대한 다른 방법으로 열거형 케이스는 모두 동일한 타입의 기본... Swift DocsEnumerationsEnumerations 9-1. 구조체와 클래스 비교, 구조체 개념(struct) 구조체와 클래스는 프로그램 코드의 구성요소가 되는 범용 구조이다. 상수, 변수, 그리고 함수를 정의하는 것과 같은 구문을 사용해서 구조체와 클래스에 프로퍼티와 메서드를 기능적으로 추가할 수 있다. 스위프트에서 클래스는 객체보다 좀 더 일반적인 인스턴스라는 용어를 사용한다. 스위프트에서 구조체와 클래스는 공통점이 많다. 값을 저장하는 프로퍼티 정의(Property) 기능 제공을 위한 메서드 정... Swift DocsstructSwift Docs 9-2. 클래스(class) 클래스는 참조타입이다. 값 타입과 반대로 참조타입은 변수 또는 상수에 할당되거나 함수로 전달될 때 복사되지 않는다. 복사본 대신 존재하는 같은 인스턴스에 대한 참조가 사용된다. 클래스는 참조 타입이므로 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능하다. 구조체와 열거형은 상수, 변수 및 함수에 전달될 때 항상 복사되므로 클래스와 다르다. 상수들이 같은 인스턴스를 참조하는... Swift DocsclassSwift Docs 10-3. 전역과 지역변수(Global and Local Variables) 프로퍼티를 계산하고 관찰하기 위해 이전에 설명한 기능들은 전역변수와 지역변수에서도 사용 가능하다. 전역변수는 함수, 메서드, 클로저, 또는 타입 컨텍스트의 외부에 정의된 변수이다. 지역변수는 함수, 메서드 등의 내부에 정의된 변수이다. 저장된 프로퍼티처럼 저장된 변수는 타입의 값을 위한 저장소를 제공하고 값을 설정 및 조회함을 허락한다. 전역상수와 변수는 지연 저장된 프로퍼티와 유사하게 항상... Swift Docs@property@property 10-1. 프로퍼티 개념, 저장된 / 지연저장된 프로퍼티, 계산된 프로퍼티 프로퍼티는 값을 특정 클래스, 구조체, 또는 열거형을 연결한다. 저장된 프로퍼티는 인스턴스의 일부로 상수와 변수값을 저장하고, 계산된 프로퍼티는 값을 저장하는 대신 계산한다. 계산된 프로퍼티는 클래스, 구조체, 열거형에서 제공되고, 저장된 프로퍼티는 클래스와 구조체에서만 제공된다. 또한 프로퍼티 는 타입 자체와도 연결될 수 있는데 이를 타입 프로퍼티라고 한다. 프로퍼티 관찰자(property... Swift Docs@property@property 10-2. 프로퍼티 관찰자(property observer), 프로퍼티 래퍼 프로퍼티 관찰자는 프로퍼티 값이 변경되는지 관찰하고 응답한다. 이는 현재 값이 새로운 값과 같아도 값이 설정되는 시기에 호출된다. 다음의 경우에 관찰자 추가가 가능하다. 정의한 저장된 프로퍼티 상속 저장된 프로퍼티 상속 계산된 프로퍼티 프로퍼티 관찰자 정의는 2가지 선택사항이 있으며, willSet과 didSet이 있다. willSet은 값이 저장되기 직전에 호출된다. 상수 파라미터로 새로운... Swift Docs@property@property 11. 메서드(Method) 메서드는 특정 타입과 연관된 함수이다. 클래스, 구조체, 열거형은 주어진 타입의 인스턴스 동작을 위한 특정작업과 기능을 지원하는 메서드를 정의할 수 있다. 그리고 이들은 또한 타입 자체와 연관된 타입 메서드 정의도 가능하다. 인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수이다. 인스턴스 메서드는 함수에서 설명한대로 함수구문과 완벽하게 동일하다. 타입의 모든 인스턴스는... Swift DocsmethodSwift Docs 13-1. 초기화 개념, 기본 초기화(initialization) 초기화는 인스턴스의 클래스, 구조체 또는 열거형을 사용하기 위해 준비하는 단계를 의미한다. 이 단계에서는 인스턴스에 저장된 프로퍼티에 초기값을 설정해주고, 새로운 인스턴스가 사용할 준비가 되기 전 다른 설정이나 초기화를 수행하는 것을 포함한다. 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출된다. 새로운 구조체의 정의간 사용하는 초기화 구문의 예시는 다음과 같다. 이는 클래스... Swift DocsInitializationInitialization 16. 에러 처리(Error handling, defer) 에러처리는 프로그램의 에러 조건에서 응답하고 대응하는 프로세스이다. 작업이 실패할 경우 코드가 그에 따라서 응답하도록 에러의 원인을 이해하는 것이 유용한 경우가 많고, 이를 위해서 에러핸들링을 사용한다. 열거형은 관련된 에러의 조건을 모델링하는데 매우 적합하며, 관련 값을 통해 에러의 특성 및 정보를 유저에게 전달할 수 있다. 에러가 발생할때는 문제를 수정하거나 다른방법을 시도하거나, 사용자... Swift Docserror handlingSwift Docs